package com.huang.CAS;


import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;

class test{
   public volatile Integer a=1;
   AtomicIntegerFieldUpdater updater = AtomicIntegerFieldUpdater.newUpdater(test.class,"a");
  //  AtomicReferenceFieldUpdater<test,Integer> updater= AtomicReferenceFieldUpdater.newUpdater(test.class,Integer.class,"a");

//    public void t(test test){
//        updater.getAndSet(test,2);
//    }
    public void transf(test test){

        updater.incrementAndGet(test);
    }
}
/*
*    对象中多个属性 只有一个经常变更   所以锁住 对象中那个属性 进行操作 比起JVM的锁力度小 开销小
*
* */
public class AtomicIntgerFileUpdateDemo {

    public static void main(String[] args) throws InterruptedException {



        test test = new test();


        System.out.println(test);

        for (int i = 0; i < 100; i++) {
            new Thread(()->{
                test.transf(test);
            }).start();
        }


        TimeUnit.SECONDS.sleep(1);

        System.out.println(test.a);


    }
}
